package com.xoa.controller.vehicle;

import com.xoa.dao.sms.SmsMapper;
import com.xoa.dao.vehicle.VehicleMaintenanceMapper;
import com.xoa.model.users.Users;
import com.xoa.model.vehicle.Vehicle;
import com.xoa.model.vehicle.VehicleUsageWithBLOBs;
import com.xoa.model.vehicle.VehicleWithBLOBs;
import com.xoa.service.vehicle.VeHicleService;
import com.xoa.util.AjaxJson;
import com.xoa.util.CookiesUtil;
import com.xoa.util.ToJson;
import com.xoa.util.common.session.SessionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * 创建作者:   高亚峰
 * 创建日期:   2017/9/20 10:26
 * 类介绍  :   车辆信息管理
 * 构造参数:
 */
@Controller
@RequestMapping("/veHicle")
public class VeHicleController {
    @Autowired
    VeHicleService veHicleService;
    @Resource
    private SmsMapper smsMapper;
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/20 10:09
     * 类介绍  :   增加车辆
     * 构造参数:
     */
    @RequestMapping("/addVeHicle")
    @ResponseBody
    public AjaxJson addVeHicle( HttpServletRequest request,VehicleWithBLOBs vehicleWithBLOBs){
        return veHicleService.addVeHicle( request,vehicleWithBLOBs);
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/20 10:49
     * 类介绍  :   修改车辆信息
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/editVeHicle")
    public AjaxJson editVeHicle(VehicleWithBLOBs vehicleWithBLOBs){
        return veHicleService.editVeHicle(vehicleWithBLOBs);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/20 10:49
     * 类介绍  :   删除车辆信息
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/deleteVeHicleByVid")
    public AjaxJson deleteVeHicleByVid(Integer vId){
        return veHicleService.deleteVeHicleByVid(vId);
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/20 10:49
     * 类介绍  :   批量删除车辆信息
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/deleteVeHiclesByVids")
    public AjaxJson deleteVeHiclesByVids(String[] vIds){
        return veHicleService.deleteVeHiclesByVids(vIds);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/20 10:49
     * 类介绍  :   查询车辆详情
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/getDetailVeHicle")
    public AjaxJson getDetailVeHicle(Integer vId){
        return veHicleService.getDetailVeHicle(vId);
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/20 10:49
     * 类介绍  :   车辆信息列表详情
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/getAllVeHicle")
    public AjaxJson getAllVeHicle(HttpServletRequest request){
        return veHicleService.getAllVeHicle(request);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/21 10:49
     * 类介绍  :   车辆维护记录详情查看
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/getVeHicleFixRecord")
    public AjaxJson getVeHicleFixRecord(Integer vId){
        return veHicleService.getVeHicleFixRecord(vId);
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/20 10:49
     * 类介绍  :   车辆信息映射地址
     * 构造参数:
     */
    @RequestMapping("/veHicleIndex")
    public String veHicleIndex(){
        return "app/vehicle/vehicleInfoManage/index";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/20 10:49
     * 类介绍  :   车辆信息管理映射地址
     * 构造参数:
     */
    @RequestMapping("/veHicleInfoManage")
    public String veHicleInfoManage(){
        return "app/vehicle/vehicleInfoManage/infoManagement";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/20 10:49
     * 类介绍  :   添加车辆映射地址
     * 构造参数:
     */
    @RequestMapping("/veHicleEdit")
    public String veHicleAdd(int editFlag, String vId, Map<String,Object> map, HttpServletRequest request){
        map.put("editFlag",editFlag);
        map.put("vId",vId);
        return "app/vehicle/vehicleInfoManage/editVehicle";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/20 10:49
     * 类介绍  :   油卡管理映射地址
     * 构造参数:
     */
    @RequestMapping("/oilCardManagement")
    public String oilCardManagement(){
        return "app/vehicle/vehicleInfoManage/oilCardManage";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/20 10:49
     * 类介绍  :   添加油卡映射地址
     * 构造参数:
     */
    @RequestMapping("/editOilCard")
    public String addOilCard(int editFlag, String id, Map<String,Object> map){
        map.put("editFlag",editFlag);
        map.put("id",id);
        return "app/vehicle/vehicleInfoManage/editOilCard";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/21 10:49
     * 类介绍  :   车辆使用申请主界面映射
     * 构造参数:
     */
    @RequestMapping("/veHicleUseageIndex")

    public String  veHicleUseageIndex(HttpServletRequest request){
        Cookie redisSessionId = CookiesUtil.getCookieByName(request, "redisSessionId");
        Users users = SessionUtils.getSessionInfo(request.getSession(), Users.class, new Users(),redisSessionId);
        smsMapper.setReadByUrl(users.getUserId(),"/veHicle/veHicleUseageIndex");
        return "app/vehicle/veHicleUseage/index";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/21 10:49
     * 类介绍  :   申请车辆界面映射
     * 构造参数:
     */
    @RequestMapping("/vehicleUseApply")
    public String  vehicleUse(int editFlag, String vuId,String sign,Map<String,Object> map){
        map.put("editFlag",editFlag);
        map.put("vuId",vuId);
        map.put("sign",sign);
        return "app/vehicle/veHicleUseage/vehicleUseApply";
    }

    @RequestMapping("/vehicleUseApply1")
    public String  vehicleUse1(int editFlag, String vuId,String sign,Map<String,Object> map){
        map.put("editFlag",editFlag);
        map.put("vuId",vuId);
        map.put("sign",sign);
        return "app/vehicle/veHicleUseage/vehicleUseApply1";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/21 10:49
     * 类介绍  :   待审批界面映射
     * 构造参数:
     */
    @RequestMapping("/pendingApply")
    public String  pendingApply(){
        return "app/vehicle/veHicleUseage/pendingApply";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/21 10:49
     * 类介绍  :   已批准界面映射
     * 构造参数:
     */
    @RequestMapping("/approvedApply")
    public String  approvedApply(){
        return "app/vehicle/veHicleUseage/approvedApply";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/21 10:49
     * 类介绍  :   使用中界面映射
     * 构造参数:
     */
    @RequestMapping("/inUseVehicle")
    public String  inUseVehicle(){
        return "app/vehicle/veHicleUseage/inUseVehicle";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/21 10:49
     * 类介绍  :   未批准界面映射
     * 构造参数:
     */
    @RequestMapping("/notApply")
    public String  notApply(){
        return "app/vehicle/veHicleUseage/notApply";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/21 10:49
     * 类介绍  :   使用详情界面
     * 构造参数:
     */
    @RequestMapping("/veHicledetail")
    public String  veHicledetail(HttpServletRequest request,Map<String,Object> map,String vuId){
        Cookie redisSessionId = CookiesUtil.getCookieByName(request, "redisSessionId");
        Users users = SessionUtils.getSessionInfo(request.getSession(), Users.class, new Users(),redisSessionId);
        map.put("vuId",vuId);
        smsMapper.setReadByUrl(users.getUserId(),"/veHicle/veHicledetail?vuId="+vuId);
        return "app/vehicle/veHicledetail";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/21 10:49
     * 类介绍  :   车辆详情界面
     * 构造参数:
     */
    @RequestMapping("/veDetail")
    public String  veDetail(Map<String,Object> map,String vId){
        map.put("vId",vId);
        return "app/vehicle/veDetail";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/22 10:49
     * 类介绍  :   获取车牌号下拉框
     * 构造参数:
     */
    @RequestMapping("/getDropDownBox")
    @ResponseBody
    public AjaxJson getDropDownBox(HttpServletRequest request){
        return veHicleService.getDropDownBox(request);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/25 15:49
     * 类介绍  :   部门审批列表主页
     * 构造参数:
     */
    @RequestMapping("/vehicleDeptApproveIndex")
    public String vehicleDeptApproveIndex(){
        return "app/vehicle/veHicleDeptApprove/index";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/25 15:49
     * 类介绍  :   部门审批待批
     * 构造参数:
     */
    @RequestMapping("/vehicleDeptpendApply")
    public String vehicleDeptpendApply(HttpServletRequest request){
        Cookie redisSessionId = CookiesUtil.getCookieByName(request, "redisSessionId");
        Users users = SessionUtils.getSessionInfo(request.getSession(), Users.class, new Users(),redisSessionId);
        smsMapper.setReadByUrl(users.getUserId(),"/veHicle/vehicleDeptpendApply?dmerStatus=0");
        return "app/vehicle/veHicleDeptApprove/pendingApply";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/25 15:49
     * 类介绍  :   部门审批未批准
     * 构造参数:
     */
    @RequestMapping("/vehicleDeptnotApply")
    public String vehicleDeptnotApply(){
        return "app/vehicle/veHicleDeptApprove/notApply";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/25 15:49
     * 类介绍  :   部门审批未批准
     * 构造参数:
     */
    @RequestMapping("/vehicleDeptApproveApply")
    public String vehicleDeptApproveApply(){
        return "app/vehicle/veHicleDeptApprove/approvedApply";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/26 15:49
     * 类介绍  :   调度员主界面
     * 构造参数:
     */
    @RequestMapping("/operatorIndex")
    public String operatorIndex(){
        return "app/vehicle/vehicleOperator/index";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/26 15:49
     * 类介绍  :   调度员待批
     * 构造参数:
     */
    @RequestMapping("/operatorpendingApply")
    public String operatorpendingApply(){
        return "app/vehicle/vehicleOperator/pendingApply";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/26 15:49
     * 类介绍  :   调度员已准
     * 构造参数:
     */
    @RequestMapping("/operatorapprovedApply")
    public String operatorapprovedApply(){
        return "app/vehicle/vehicleOperator/approvedApply";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/26 15:49
     * 类介绍  :   调度员使用中
     * 构造参数:
     */
    @RequestMapping("/operatorinUseVehicle")
    public String operatorinUseVehicle(){
        return "app/vehicle/vehicleOperator/inUseVehicle";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/26 15:49
     * 类介绍  :   调度员未准
     * 构造参数:
     */
    @RequestMapping("/operatornotApply")
    public String operatornotApply(){
        return "app/vehicle/vehicleOperator/notApply";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/26 15:49
     * 类介绍  :   使用结束
     * 构造参数:
     */
    @RequestMapping("/operatorUseEnd")
    public String operatorUseEnd(){
        return "app/vehicle/vehicleOperator/operatorUseEnd";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/26 15:49
     * 类介绍  :   全部查询
     * 构造参数:
     */
    @RequestMapping("/operatorQuery")
    public String operatorQuery(){
        return "app/vehicle/vehicleOperator/operatorQuery";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/26 15:49
     * 类介绍  :   调度员映射
     * 构造参数:
     */
    @RequestMapping("/OperatorMange")
    public String OperatorMange(){
        return "app/vehicle/vehicleOperator/manage";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/27 15:49
     * 类介绍  :   通过车牌号查询是否重复
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/getVeHicleByNum")
    public AjaxJson getVeHicleByNum(String vNum){
        return veHicleService.getVeHicleByNum(vNum);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/27 15:49
     * 类介绍  :   通过车牌号查询是否在维修中
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/getVeHicleStatus")
    public AjaxJson getVeHicleStatus(VehicleUsageWithBLOBs vehicleUsageWithBLOBs){
        return veHicleService.getVeHicleStatus(vehicleUsageWithBLOBs);
    }



}
